package com.leetcode.study;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 两数之和
 * https://leetcode.cn/problems/two-sum/
 */
public class L1 {
    public static void main(String[] args) {
        int[] test = new int[]{2,7,11,15};
        int[] ints = twoSum(test, 9);
        Arrays.stream(ints).forEach(System.out::println);

    }

    public static int[] twoSum(int[] nums, int target) {
        // int[] result = new int[2];

        // for (int i = 0; i < nums.length; i++) {

        //     for (int j = i+1; j < nums.length; j++) {

        //         int numI = nums[i];
        //         int numJ = nums[j];

        //         if (target == (numI + numJ)) {
        //             result[0] = i;
        //             result[1] = j;
        //         }
        //     }
        // }

        // return result;

        // int[] result = new int[2];

        // if(nums == null || nums.length == 0) {
        //     return null;
        // }

        // Map<Integer,Integer> map = new HashMap<>();
        // for (int i = 0; i < nums.length; i++) {

        //     if (map.containsKey(target - nums[i])) {
        //         result[0] = map.get(target - nums[i]);
        //         result[1] = i;
        //         return result;
        //     }

        //     map.put(nums[i],i);
        // }

        // return result;

        if(nums == null || nums.length == 0) {
            return null;
        }

        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < nums.length; i++) {
            if(map.containsKey(target - nums[i])) {
                return new int[]{i, map.get(target - nums[i])};
            }
            map.put(nums[i], i);
        }
        return new int[2];
    }
}
